草庐IT

c++ - 复制对象时的虚拟表

全部标签

ruby-on-rails - Ruby 中对象销毁的通知

我已经编写了自定义Rails模型。该模型由实际服务器支持,而不是数据库表(因此它不继承自ActiveRecord::Base)。为了从服务器获取请求的信息,我打开了一个SSH连接。因为rails不会重用对象,所以将为收到的每个请求创建一个新对象以及到服务器的新SSH连接。为了减少服务器压力,我想在模型对象被垃圾收集之前关闭SSH连接。我想知道ruby​​是否提供通知机制来通知对象它将被销毁?如果是这样,我可以使用此通知来了解何时关闭SSH连接。否则,当我知道我已完成该对象时,我将需要手动执行此操作。如果我需要手动处理这个问题,我可以显式销毁对象吗?或者我能做的最好的是object=ni

基于对象属性定位的 Ruby 数组方法?

假设我有一个Ruby类,Flight。Flight上有一个attr_accessor:key。如果有一个此类的实例数组:flights=[flight1,flight2,flight3],我有一个“目标键”,比如说“2jf345”,我想根据它找到一个航类键,来自该数组-我应该使用哪种代码?这是我要使用的代码:航类[flights.map{|s|s.key}.index(target_key)]但是对于Ruby,似乎应该有更简单的方法。此外,上面的代码为我返回了一个错误-`[]':noimplicitconversionfromniltointeger(TypeError)。我认为这意味

ruby - 从 Ruby 中的 String 对象获取括号之间的内容

我有这样一个字符串:大家好,我叫John(又名Johnator)。获取括号(包括括号)之间的内容的最佳方法是什么? 最佳答案 您可以使用String#[]使用正则表达式:a="HimynameisJohn(akaJohnator)"a[/\(.*?\)/]#=>"(akaJohnator)" 关于ruby-从Ruby中的String对象获取括号之间的内容,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com

ruby-on-rails - 在特定时区的一天开始时获取时间对象

如何获取代表给定时区中特定日期的一天开始的ruby​​Time对象。 最佳答案 date=Date.todaydate.to_time.in_time_zone('America/New_York').beginning_of_day当前输出=>2011-11-0200:00:00-0400Time.now.in_time_zone('Asia/Shanghai').beginning_of_day当前输出=>2011-11-0300:00:00+0800date=Date.todaydate.to_time.in_time_zon

c - Ruby C 扩展 API 问题

所以,最近我不幸地需要为Ruby做一个C扩展(因为性能)。因为我在理解上有问题VALUE(并且仍然如此),所以我查看了Ruby源代码并发现:typedefunsignedlongVALUE;(LinktoSource,但您会注意到它还有其他一些“方法”,但我认为它本质上是一个long;如果我错了,请纠正我)。因此,在进一步调查时,我发现了一个有趣的blogpost,其中说:"...insomecasestheVALUEobjectcouldBEthedatainsteadofPOINTINGTOthedata."令我困惑的是,当我尝试从Ruby将字符串传递给C并使用RSTRING_PT

c - 在 C 中扩展 ruby​​ - 如何指定函数的默认参数值?

我正在尝试为将生成一个类的ruby​​编写C扩展。我正在研究如何为类定义一些默认参数。例如,如果我在ruby​​中有这个类decleration:classMyClassdefinitialize(name,age=10)@name=name@age=ageendend您可以使用mc=MyClass.new("blah")初始化它,年龄参数将在内部设置。我如何在C中执行此操作?到目前为止我得到了这个,但这迫使进入另一个论点:require"ruby.h"staticVALUEmy_init(VALUEself,VALUEname,VALUEage){rb_iv_set(self,"@n

ruby - 'eval' 是与 Ruby 中的绑定(bind)对象交互的唯一方式吗?

我是Ruby的新手,到目前为止,弄清楚如何使用"binding"objects是我最大的痛点之一。如果我没有正确阅读文档,它们几乎是完全不透明的。要访问绑定(bind)对象内的范围,您必须有一串Ruby代码和eval它使用绑定(bind)。也许我只是来自不同学校的纯粹主义者,但一般来说,我对基于字符串的“eval”结构过敏。在一般情况下,给定一个绑定(bind)对象,有什么方法可以安全地执行以下任何操作:在绑定(bind)表示的上下文中列出范围内的标识符,或检索内容的哈希值。将绑定(bind)中局部变量的值设置为等于外部上下文中某个局部变量的值。理想情况下,这应该可以正常工作,即使值是

c - 如何在 Mac OS X 上使用 ulimit 或每个进程为 C 或 Ruby 程序更改堆栈大小?

似乎为C程序或Ruby程序(使用C堆栈)设置堆栈大小的推荐方法是使用ulimit。在Bash外壳中。但是$ulimit-s8192$ulimit-s16384-bash:ulimit:stacksize:cannotmodifylimit:Operationnotpermitted和sudo也没有帮助。有没有办法将其设置为16MB、32MB或64MB?我认为应该有一种方法可以在每次程序调用时设置它,而不是同时设置系统范围的参数?现在8192可能意味着8MB,如果与一个进程可以使用的内存量相比,这是非常小的,有时最多2GB的RAM。(更新注释:ulimit-a可以显示其当前值)。(更新2

ruby - 单元测试应该复制功能还是测试输出?

我曾多次遇到这种困境。我的单元测试是否应该复制他们正在测试的方法的功能以验证其完整性?或者单元测试是否应该努力用大量手动创建的输入和预期输出实例来测试该方法?我主要针对以下情况提出问题:您正在测试的方法相当简单,并且可以通过浏览代码一分钟来验证其正确操作。简化示例(ruby):defconcat_strings(str1,str2)returnstr1+"AND"+str2end上述方法的简化功能复制测试:deftest_concat_strings10.timesdostr1=random_string_generatorstr2=random_string_generatorass

ruby-on-rails - Rails 3 ActiveRecord 抽象对象

我正在尝试实例化抽象AR类的对象以用于测试目的。模型的定义如下:classBasic当我尝试Basic.new时,我得到:"Mysql2::Error:Table'project_development.basics'doesn'texist"这是正常行为吗?即使没有(显然不可能)持久性,抽象AR类是否也不会被实例化?在Rails3.0.4/Mysql20.2.6中使用1.9.2-p136编辑:事实证明错误是由列定义引起的,在抽象模型的情况下无法从数据库中获取列定义。classBasic像魅力一样工作。 最佳答案 这是正常行为。抽象